by Ken Worley, Copyright 1999. All Rights Reserved WorldWide.
See the end of this file for notes about this latest version. You can always obtain
the latest version of PrintCalendar from http://home.sprynet.com/sprynet/worleys/
and http://printcalendar.8m.com.
Short Description:
PrintCalendar was designed so that I could print out calendar pages to stick in my notebook. I wanted several predetermined dates to print on it, so I kludged in a way to specify fixed and repeating dates of several types (event files). It will also figure out any Easter and the related dates if you want. As it turns out, the calendar looks pretty good on my computer's desktop, so I spiffed it up (in 1.0b5) with background image capability. Now it looks really cool both on screen and printed out. You can customize it in several different ways, add your own events (with a text editor or word processor), and print it all out.
New in this release
1.2b3 - Public Release as of January 18, 1999
Think I've finally fixed the microscopic events text problem that occurs when
you specify a manual events text size and use Normal printing mode.
1.2b2 - Public Release as of January 13, 1999
Max print resolution is allowed to be 600 dpi instead of everything up to but
not including 600 dpi.
Attempted to fix a preferences dialog closing problem that I cannot reproduce.
Attempted to center the calendar better especially when printing.
Image scaling/positioning is now based on the calendar bounds rather than the
window/page bounds.
1.2b1 - Public Release as of December 17, 1998
European style display (Monday first) added (option in prefs).
All display strings moved to resource file for better localization.
Go To and Print Date Range popups should appear in correct language now
(even without localization)
Option added in prefs to show weekday names unabbreviated.
Fonts may be chosen in prefs for Month/Year, Weekday names,
Day numbers, and Events.
Option to force size of event descriptions to a given point size.
"Empty" days at the beginning and end of the month are framed.
Added Mercutio MDEF so when shift key is held down, Command-[ and
Command-] change the year instead of the month.
Added option to use Command-+ and Command-- to go to next or prev
month (next or prev year if shift key is down).
When started the first time, gives the option of copying prefs from
an older version (including background image).
Distribution:
PrintCalendar is freeware. It is not public domain; I retain the copyright. :)
This application may be distributed without charge as long as it is accompanied by this document. It may also be distributed as part of a Shareware/Freeware collection CD (or other similar media). I would prefer to receive a copy of the CD in that case.
This application is in final v1.0 release as of October 19, 1998. Please send any comments or suggestions to Ken Worley at this email address: worleys@sprynet.com.
Certainly, if you like the application, you should email me. If you don't, I may lose interest almost immediately (or as soon as the app meets my own needs, which is why I wrote it) and never make another release.
System Requirements:
Macintosh computer (or compatible) running MacOS 7 or later.
Instructions:
The calendar application only shows one main window which contains a calendar page for a single month. You may change which month is shown using the next and previous menu commands or the go to dialog available from the menu. You may also print either the currently showing month, or a range that you specify in the print range dialog available from the File menu. One calendar page is printed per sheet of paper though some printer drivers may allow you to print "2 up", "4 up" or whatever. By default, the calendar page prints in portrait orientation. If you select Page Setup from the File menu, you can change it to landscape. The application should remember these settings between launches.
The application always launches with the current month showing.
Note that the application saves its preferences in its own resource fork. It creates no files on your hard disk. If this is a problem for you, let me know and I may change it. This allows you to launch and display as many calendars as you like (by copying the application) and set different preferences for each.
The application has the ability to read event files so that events or notes may be displayed in the calendar (and printed as well). You cannot edit these event files from within the PrintCalendar application. They are simple text files with the following format:
One event per line.
Three tab delimited fields per line.
Field 1 is a date (see below).
Field 2 is an optional modifier that allows you to specify things like 2nd Monday (see below).
Field 3 is a note or description that will be displayed in the calendar on the specified date.
Lines in the event file that begin with an asterisk or are blank are ignored.
Dates in the event file:
All dates in the event file are specified in this format: yyyymmdd. For example, 19671114 represents Nov 14, 1967. You may also, however, replace any of the components with zeroes to make a 'wildcard' date. For example, 00001114 represents Nov 14 of any year and would be displayed on that date in the calendar on any given year. Another example: 00000001 would show up on the first day of every month.
Modifiers allow you to specify dates that aren't possible with the simple date format described above. Here are your options:
x Monday (where x is a number 1 thru 5 optionally followed by st, rd, nd, or th)
(example: 2nd Monday)
every Mon (every Monday during the given month (or every month if none given))
last Monday (the last Monday that occurs during the given month)
last day (the last day of the month)
1st anyweekday (first Mon, Tue, Wed, Thu, or Fri of the month)
last anyweekday (last Mon, Tue, Wed, Thu, or Fri of the month)
anyweekday before (first weekday before or on a given date)
anyweekday after (first weekday after or on a given date)
every x (event occurs on the given date and every x days thereafter)
(example: every 14 occurs on the given date and every 2 weeks after)
Fri before (Friday before the given date (could be any weekday))
Monday after (Monday after the given date (could be any weekday))
In addition to the above, you can add +x or -x to the end to add or subtract
x days from whatever the result would have been. For example, National
Grandparents day is on the 1st Sunday after Labor day in September. Labor day
is the 1st Monday in September. So, Nat Grandparents Day would be expressed
like this:
00000900 <tab> 1st Monday +6 <tab> National Grandparents' Day
The 00000900 indicates any day in September of any year. The 1st Monday part
restricts that to the 1st Monday of September, then the +6 moves it to the
following Sunday. Boy, who needs Grandparents day anyway? This also works for
General Election day, which is the 1st Tues after the 1st Mon in November.
Typically, an event file looks something like this (where <tab> represents an actual tab character):
00001114 <tab> <tab> Ken's Birthday
00001225 <tab> <tab> Christmas
00000500 <tab> Last Mon <tab> Memorial Day
19981128 <tab> <tab> Star Trek Convention
For those of you who are paid biweekly, you can enter your payday like this:
19981121 <tab> every 14 <tab> Payday!
where 19981121 is a known payday. The event will show on that day and every two weeks thereafter.
Tax day is always on April 15th unless that day is on a weekend, then it's the first weekday after, so you'd enter it like this:
00000415 <tab> anyweekday after <tab> Tax Day!
Events may appear in any order in the file. You don't have to sort them by date manually. If two or more events match the same day in the calendar, they will appear in the order in which they appeared in the event file.
You can tell the application to open a default events file every time it is launched by using the Set Default Event File command in the file menu. You can select only one default event file. You can clear this default file with the corresponding Clear Default Event File command. You can also drop event files onto the application's icon in the Finder or use the Open Event File command in the File menu to open as many event files as you like.
The window position and size are saved between launches.
A sample Events file should accompany the calendar application and contains many standard holidays and other events (many of which are 'commented out' with an asterisk - remove the asterisk to activate them).
Some notes about options
Calendar Misc
Maximize space - uses all available room instead of always making days the same size.
Leave room for binder holes - leaves more room on the left edge when printing.
(I know, this probably ought to be in the Printing pane...I'll move it later :)
Don't color weekends & today - Don't make weekends blue nor today red.
Calculate Easter & related dates - Automatically calculates Easter of any year and all
the related holidays as well.
Open all text files in my folder - Attempts to open any text file in the same folder
as PrintCalendar when it starts up to see if there are events in them.
Calendar Style
Use 2 column view instead of standard - Displays the calendar as two vertical columns
of days instead of the usual calendar view.
Print 1 column per page - When using 2 column view, this causes 2 pages to be
generated for each month - one page for each column.
Normally, the calendar displays weeks as Sunday through Saturday, but you may
choose to display the calendar European style, Monday through Sunday.
You can choose here whether weekday names are shown in full, or abbreviated.
Calendar Fonts & Text
You can choose here what size numbers to display in the calendar's standard view.
You may also select what font to use for:
- the month and year
- the weekday names
- the date numbers
- events text
You may also choose to force the events text to a certain point size at all times.
Image
Display image above calendar - Normally, when you paste in a background image, it's
displayed behind the calendar contents. Checking this option causes it to display on
the given percentage of the page or window above the calendar while the calendar
takes the rest of the room.
Don't blend image with calendar - Doesn't blend the image with the calendar contents
as usual.
Image Scaling - Three options for sizing the background image - try them out!
Printing
Fastest Printing - Does not blend the background image with the calendar contents nor
does it alter the image's saturation as it does on screen. Printing is very fast though
and everything prints at its best resolution. When there is no background image, this
method is used as a matter of course.
Faster Printing - Prints the calendar at screen resolution. This method still blends the
image and everything, but doesn't use the increased resolution of the printer, so text
and the image may look a little jaggie.
Normal Printing - Uses gobs and gobs of memory while printing in order to produce a
blended image at your printer's best resolution (up to 600 dpi). You may need upwards
of 20 to 35 MB of free RAM to do this, but it looks great!
Comments are welcome at worleys@sprynet.com.
Ken
Acknowledgements:
Special thanks to Douglas Anderson who was an invaluable help in finding bugs and making suggestions for enhancements.
Version History (previous versions)
Considering for the near future:
Date ranges
Page view option (using selected paper size of current printer).
・・Store settings in a separate file (optional?).
1.1.2 - Limited Release as of 12/4/98
Month and day names are now extracted from the system's international resources
so they should appear in the correct language (even without localization).
1.1.1 - Public Release (11/17/98)
When the highest level of image saturation is selected, the image is displayed
unmodified.
1.1 - Public Release (11/10/98) VERSION 1.1 FINAL
Better error reporting when pasting a background image fails.
Added 2 additional printing modes to use less memory. When there is no background
image, printing is now very fast and uses little memory.
Events can now specify any weekday before or after a given date (i.e. any weekday after
or on April 15th of any year - tax day!).
Added a real prefs dialog!
1.0 - Public Release (10/19/98) VERSION 1.0 FINAL
Fixed printing memory problems that have plagued the program since the beginning.
Added a printing progress dialog and the ability to cancel a print job in progress.
When a background image doesn't cover the whole calendar, the rest of the calendar is
still blended with white so that there isn't a sharp difference at the edge of the picture.
1.0fc3 - Public Release (10/2/98) FINAL CANDIDATE THREE
When two events have an identical date value, they will appear in the calendar in the
same order that they appeared in the events file.
The month popup in the Go To dialog now works in OS versions prior to OS8.
1.0fc2 - Public Release (10/1/98) FINAL CANDIDATE TWO
The calendar will follow the current date if you leave it open overnight or if you
change the date (unless the calendar was not showing the current date before).
Fixed an obscure bug that could cause an event to duplicate itself in the same
month when an adjustment value is used (i.e. 1st Sun -1). Thanks Lance Murray. :)
When printing, the image is copied in strips. This is an attempt to alleviate memory
problems when printing with certain printer drivers.
1.0fc1 - Public Release (9/9/98) FINAL CANDIDATE ONE
Kept the calendar from erasing and redrawing when not necessary.
Fixed a minor bug that could cause semi-blank pages to print when printing a range.
1.0b9 - Tested internally (9/9/98)
Calendar now keeps its image in an offscreen GWorld for faster simple updating
especially on slower computers. Resizing and content changes will still go
the same speed.
Fixed a minor bug that allowed some duplicates to get in if you drop the same file
on the application more than once.
1.0b8 - Public Beta Release (9/4/98)
Definitely fixed the 68k intermittent crashing bug. This bug also caused
intermittent crashes on PPC, but only when printing to Print2Pict or eDoc. Weird.
Added option to print calendar elements only in black (for strictly B&W printers).
Moved event descriptions away from the edges of the day rectangles a little.
Event descriptions print a little larger now.
1.0b7 - Limited Beta Release (9/3/98)
Possibly fixed 68k crashing problem (the Duo problem). Unable to reproduce
the problem after fixes.
1.0b6 - Limited Beta Release (9/3/98)
Known issue - Quits on startup if no prefs established and StyleWriter 1200
driver is default. Works fine if startup with other driver, then switch.
Locks up if run on my Duo 230 in dock with external gs monitor. Untested without
dock & monitor.
Making this release PPC only due to above problem.
Fixed printing issue - was printing only at screen resolution.
Fixed events printing too close to or over day of week in 2-column view.
1.0b5 - Public Beta Release (9/2/98)
Added background image capability with adjustable saturation (try it!).
Image can be blended with other calendar contents, or calendar elements
can sit on top of the image (opaque).
All events now draw one per line instead of wrapping. Like this? Don't
like this? Let me know.
Events now start at the bottom of the day's rectangle and work up instead
of the other way around.
1.0b4 - Public Beta Release (8/28/98)
Fixed a bug that could cause preference flags to be read differently by
68K and PPC parts of a FAT app.
Ignores multiple duplicate events (i.e. same file dropped on it twice).
Now reads the event file as soon as it is made the default event file.
Added options for different number sizes.
Added option to read every text file in the same folder as the application.
Added two column view option.
Made maximize space option work with the two column view.
Added option to print two column view month across two pages.
Used a different file object to avoid reading entire event file at once.
1.0b3 - Public Beta Release (8/24/98)
Fixed a bug that caused calendar to print a little smaller than it should have
Added 'maximize size' preference - uses all avail space instead of always
leaving room for 6 weeks.
Added 'leave room for binder holes' preference.
1.0b2 - Public Beta Release (8/21/98)
Remembers preference - Show Easter & related dates.
Remembers window position & size between launches.
Added the ability to adjust an event date by x days using +/-x.
Added ability to specify last day of month.
Added ability to specify first or last weekday of month.